export default {
  /**
   *   ws: null,为websocket实例
   * 保证整个项目只有一个socket实例
   * init()为启动的时候调用socket方法;方法有三个参数,
   * 一个为用户端传过来的ID,(config)
   * 一个为客户端接收到的时候触发的回调参数(onMessage)
   * 最后一个为出现错误的时候一个回调(onError)
   *  */
  ws: null,
    init(config, onMessage, onError) {
        /**
         * 这个if意思为如果你一个项目开启了两个端口,就会生成两个websocket所以这里判断如果有两就让一个置为空
         */
        if (!this.ws) { 
            // 如果没有这个实例我们就需要创建一个,然后把登录进来用户的Id放进实例
            this.ws = new WebSocket(`ws://localhost:3000/${config.user.id}`);
        };
        // 客户端接收消息
        this.ws.onmessage = event => {
            // 把服务端传过来的信息存入客户端
            let message = JSON.parse(event.data);
            // let message = event.data;
            // 确保是有参数的,防止有空参数,接收到消息触发的回调函数,返回到VUE
            onMessage && onMessage(message);
            // 出错
            this.ws.onerror = error => {
                onError && onError(error)
            }
        };
        this.ws.onclose = () => {
            this.ws = null;
        };
    },
    // 发送消息
    send(mseObj) {
        this.ws.send(JSON.stringify(mseObj));
        // this.ws.send(mseObj);
    }
};
// 实例化中可以放置两个参数,第一个固定为Ip

// const ws = new WebSocket()